﻿using Manon.Admin.Web.ApplicationCore.Dtos.Settings;
using Manon.Autofac;
using Manon.Core.Commons;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Manon.Admin.Web.ApplicationCore.Interfaces
{
    public interface ISettingsService : ISingletonDependency
    {
        /// <summary>
        /// 保存基本设置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveBaseSettings(SaveBaseSettingsInput Input);

        /// <summary>
        /// 获取用户基本设置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<GetBaseSettingsOutput> GetBaseSettings();


        /// <summary>
        /// 获取用户基本的安全设置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<GetBaseSafeSettingsOutput> GetSafesettings();

        /// <summary>
        /// 保存基本安全设置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveBaseSafeSettings(SaveBaseSafeSettingsInput Input);


        /// <summary>
        /// 获取用户基本的安全设置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<GetBaseEmailSettingsOutput> GetEmailSettings();

        /// <summary>
        /// 保存基本邮件设置
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveBaseEmailSettings(SaveBaseEmailSettingsInput Input);



        /// <summary>
        /// 获取屏蔽词
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<GetGetSysShieldingOutput> GetSysShielding();

        /// <summary>
        /// 保存屏蔽词
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveSysShielding(SaveSysShieldingInput Input);


        #region 栏目相关
        /// <summary>
        /// 获取栏目
        /// </summary>
        /// <returns></returns>
        Task<List<GetChanelListTreeOutput>> GetChanelListTree();




        /// <summary>
        /// 保存栏目
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveChanel(SaveChanelInput Input);


        /// <summary>
        /// 删除栏目
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> DeleteChanel(int Id);


        /// <summary>
        /// 设置栏目启用/禁用
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SetChanelEnabled(int Id, bool Enabled);


        /// <summary>
        /// 获取栏目
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<GetChanelListTreeOutput> GetChanel(int Id);
        #endregion

    }
}
